﻿using System;

namespace CylinderApplication
{
    // （1）定义接口A
    public interface A
    {
        double Area();
    }

    // （2）定义接口B
    public interface B
    {
        void SetColor(string c);
    }

    // （3）定义接口C，继承接口A和B
    public interface C : A, B
    {
        void Volume();
    }

    // （4）定义圆柱体类Cylinder实现接口C
    public class Cylinder : C
    {
        // 成员变量
        private double radius;  // 底圆半径
        private double height;  // 圆柱体的高
        private string color;   // 颜色

        // 构造方法
        public Cylinder(double radius, double height, string color)
        {
            this.radius = radius;
            this.height = height;
            this.color = color;
        }

        // 实现接口A的方法：计算底面积
        public double Area()
        {
            return Math.PI * radius * radius;
        }

        // 实现接口B的方法：设置颜色
        public void SetColor(string c)
        {
            color = c;
        }

        // 实现接口C的方法：计算体积
        public void Volume()
        {
            double volume = Area() * height;
            Console.WriteLine($"圆柱体体积: {volume:F2}");
        }

        // 显示圆柱体信息的方法
        public void DisplayInfo()
        {
            Console.WriteLine($"圆柱体信息 - 半径: {radius:F2}, 高度: {height:F2}, 颜色: {color}");
            Console.WriteLine($"底面积: {Area():F2}");
            Volume();
        }
    }

    // （5）主类测试
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("=== 圆柱体测试程序 ===\n");

            // 创建圆柱体对象
            Cylinder cylinder = new Cylinder(3.0, 5.0, "红色");

            // 测试接口A的方法
            Console.WriteLine("1. 测试接口A的方法 - Area():");
            double area = cylinder.Area();
            Console.WriteLine($"底面积: {area:F2}\n");

            // 测试接口B的方法
            Console.WriteLine("2. 测试接口B的方法 - SetColor():");
            Console.WriteLine($"原颜色: 红色");
            cylinder.SetColor("蓝色");
            Console.WriteLine($"修改后颜色: 蓝色\n");

            // 测试接口C的方法
            Console.WriteLine("3. 测试接口C的方法 - Volume():");
            cylinder.Volume();
            Console.WriteLine();

            // 通过接口引用测试多态性
            Console.WriteLine("4. 通过接口引用测试:");

            // 使用接口A引用
            A interfaceA = cylinder;
            Console.WriteLine($"通过接口A调用Area(): {interfaceA.Area():F2}");

            // 使用接口B引用
            B interfaceB = cylinder;
            interfaceB.SetColor("绿色");
            Console.WriteLine("通过接口B设置颜色为绿色");

            // 使用接口C引用
            C interfaceC = cylinder;
            Console.Write("通过接口C调用Volume(): ");
            interfaceC.Volume();

            Console.WriteLine();

            // 显示完整信息
            Console.WriteLine("5. 完整圆柱体信息:");
            cylinder.DisplayInfo();

           
        }
    }
}